package com.lh.common.entity.state;


/**
* @ClassName: BaseEnum
* @Description: 状态枚举类的基类(这里用一句话描述这个类的作用)
* @author TangCai
* @date 2018年12月28日 下午8:02:29
* 注意：本内容仅限于全民通科技内部传阅，禁止外泄以及用于其他的商业目
*/

public interface BaseEnum{


	/**
	* @Title: toCode
	* @Description: 转化数据库对应的值(这里用一句话描述这个方法的作用)
	* @param @return    设定文件
	* @return String    返回类型
	* @throws
	*/
	public String toCode();


	/**
	* @Title: getByCode
	* @Description: 通过code获取枚举实体(这里用一句话描述这个方法的作用)
	* @param @param enum_ 对应枚举类
	* @param @param nCode 对应数据库的code值
	* @param @return    设定文件
	* @return T    返回类型
	* @throws
	*/
	public static <T extends Enum<?>> T getByCode(Class<T> enum_, String nCode) {
		T pds = null;
		if (nCode != null) {
			T[] ts = enum_.getEnumConstants();
            for (T ps : ts) {
                if (nCode.equals(((BaseEnum)ps).toCode())) {
                    pds = ps;
                    break;
                }
            }
        }
        return pds;
    }

	/**
	* @Title: isName
	* @Description: 判断是否存在name(这里用一句话描述这个方法的作用)
	* @param @param enum_
	* @param @param name
	* @param @return    设定文件
	* @return boolean    返回类型
	* @throws
	*/
	@SuppressWarnings("unchecked")
	public static boolean isName(@SuppressWarnings("rawtypes") Class enum_, String name) {
        boolean isName = true;
        try {
        	Enum.valueOf(enum_, name);
        } catch (IllegalArgumentException e) {
            isName = false;
        }
        return isName;
    }
}
